WebWork 2 : IoC配置
This page last changed on Dec 13, 2004 by mcampbell.
配置 - web.xml为配置WebWork的组件管理, 必须在web.xml的适当位置加入下列内容:<filter> <filter-name>container</filter-name> <filter-class>com.opensymphony.webwork.lifecycle.RequestLifecycleFilter</filter-class> </filter> <filter-mapping> <filter-name>container</filter-name> <url-pattern>*.action</url-pattern> <!-- modify appropriately --> </filter-mapping> <!-- 你也可以选择将filter对应到任一URI而不仅是*.action. --> <!--下面这种情况就需要这么做: --> <!-- * 在接到请求后直接调用JSP(因为仅使用了*.action) --> <!-- * JSP中包含一个活动并通过ww:action标签运行--> <!-- * 活动实现了一些enabler接口一获取组件为其服务 --> <!-- 这样做的理由: (Per Patrick Lightbody) --> <!-- "组件通过在request的属性中查找ComponentManager进行工作. --> <!-- 它通过filter发生作用. 如果在整个过程中没有一个#42;.action, --> <!-- filter不会起作用, 组件也绝不会工作." --> <!-- 这么做的代价很小, 因此不要过度担心 --> <!-- 这样做的性能. --> <!-- <filter-mapping> --> <!-- <filter-name>container</filter-name> --> <!-- <url-pattern>*</url-pattern> --> <!-- </filter-mapping> --> <listener> <listener-class>com.opensymphony.webwork.lifecycle.SessionLifecycleListener</listener-class> </listener> <listener> <listener-class>com.opensymphony.webwork.lifecycle.ApplicationLifecycleListener</listener-class> </listener> 这些设置允许WebWork在application, session和request范围中管理组件. 注意即使你的应用中不使用全部scope, 上述三个scope也必须在web.xml中指定, 这样WebWork的组件管理才能正确工作. 配置 - xwork.xmlComponentInterceptor用于对XWork的活动进行反转控制(也就是说, 为活动提供组件). ComponentInterceptor应当声明在xwork.xml的<interceptors>部分: <interceptor name="component"
class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor"/>
应当确保所有需要组件的活动都应用了这个截取器. (关于如何将截取器应用到活动上, 参见OS:XWork Interceptors.) 配置 - components.xml文件components.xml用于定义可用组件. 这里指定的组件将被加载到XWork的ComponentManager可以被任何活动使用. components.xml必须放在根类路径中(也就是WEB-INF/classes目录).这里有一个components.xml样例, 它配置了一个Counter组件. Counter将生存在session对象中, 将被传递到任何实现CounterAware接口的活动中: <components> <component> <scope>session</scope> <class>com.opensymphony.webwork.example.counter.Counter</class> <enabler>com.opensymphony.webwork.example.counter.CounterAware</enabler> </component> </components> 每一个组件元素必需包含下列属性:
注意虽然组件可以依赖于其他组件, 但不能依赖于更小范围的组件. 因此, 一个session范围的组件不能依赖于一个请求范围的组件. 因此, 一个session范围的组件不能依赖于一个请求范围的组件. |
Document generated by Confluence on Dec 14, 2004 16:36 |